package com.junxonline.instant.admin.service.device;

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junxonline.instant.common.entity.common.CommonReqPage;
import com.junxonline.instant.common.entity.common.CommonRespPage;
import com.junxonline.instant.dao.entity.dto.terminal.CommandSettingDTO;
import com.junxonline.instant.dao.entity.dto.terminal.QueryDisplayTypeDTO;
import com.junxonline.instant.dao.entity.dto.terminal.QueryScreenshotDTO;
import com.junxonline.instant.dao.entity.dto.terminal.QueryVolumeDTO;
import com.junxonline.instant.dao.entity.model.device.Terminal;
import com.junxonline.instant.dao.entity.vo.common.IdsVO;
import com.junxonline.instant.dao.entity.vo.device.BatchTerminalVO;
import com.junxonline.instant.dao.entity.vo.device.TerminalVO;
import com.junxonline.instant.dao.entity.vo.iobean.ExcelOutBean;

import java.util.List;

/**
 * 终端管理接口
 *
 * @author JunX
 * @date 2021-09-22
 */
public interface TerminalService extends IService<Terminal> {

    /**
     * 查询终端音量设置
     *
     * @param id ID
     * @return QueryVolumeDTO
     */
    QueryVolumeDTO queryVolumeSetting(Long id);

    /**
     * 查询终端音量
     *
     * @param id ID
     * @return QueryVolumeDTO
     */
    QueryVolumeDTO queryVolume(Long id);

    /**
     * 查询终端显示方式设置
     *
     * @param id ID
     * @return QueryDisplayTypeDTO
     */
    QueryDisplayTypeDTO queryDisplayTypeSetting(Long id);

    /**
     * 查询终端显示方式
     *
     * @param id ID
     * @return QueryDisplayTypeDTO
     */
    QueryDisplayTypeDTO queryDisplayType(Long id);

    /**
     * 查询终端截屏
     *
     * @param id ID
     * @return QueryScreenshotDTO
     */
    QueryScreenshotDTO queryScreenshot(Long id);

    /**
     * 查询终端指令设置
     *
     * @param id ID
     * @return CommandSettingDTO
     */
    CommandSettingDTO queryCommandSetting(Long id);

    /**
     * 查询终端列表
     *
     * @param vo      请求参数
     * @param wrapper 条件查询器
     * @return CommonRespPage<Terminal>
     */
    CommonRespPage<Terminal> queryList(CommonReqPage<TerminalVO> vo, QueryWrapper<Terminal> wrapper);

    /**
     * 查询终端
     *
     * @param id ID
     * @return Terminal
     */
    Terminal query(Long id);

    /**
     * 新增终端
     *
     * @param terminal 请求参数
     */
    void add(Terminal terminal);

    /**
     * 编辑终端
     *
     * @param terminal 请求参数
     */
    void edit(Terminal terminal);

    /**
     * 批量编辑终端
     *
     * @param vo 请求参数
     */
    void batchEdit(BatchTerminalVO vo);

    /**
     * 删除终端
     *
     * @param ids 请求参数
     */
    void delete(List<Long> ids);

    /**
     * 导出
     *
     * @param vo 请求参数
     * @return ExcelOutBean
     */
    ExcelOutBean exportExcel(IdsVO<List<Long>> vo);

    /**
     * 导入
     *
     * @param jsonArray 请求参数
     * @return String
     */
    String importExcel(JSONArray jsonArray);
}
